Aufruf per Funktionsbaustein
Im folgenden wird erklärt, wie das ALV-Grid einfach mithilfe eines Funktionsbausteines aufgerufen und angepasst werden kann.
Der Funktionsbaustein REUSE_ALV_GRID_DISPLAY_LVC ermöglicht es, eine Liste als ALV-Grid auszugeben. Viele Parameter machen den Funktionsbaustein sehr variabel.
Minimal-Aufruf
Für eine einfache Liste brauchen Sie nur die Tabelle mit den Daten zu übergeben, sowie die Dictionary-Struktur, nach der die Datentabelle definiert ist.
DATA:
t_tab like ztest_struc_alv occurs 0 with header line.
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING
i_structure_name = ‘ZTEST_STRUC_ALV’
TABLES
t_outtab = t_tab
EXCEPTIONS
OTHERS = 2.
Aufruf mit Auswahl
In folgendem Beispiel wird die Mandanten-Tabelle T000 eingelesen und in einem Popup angezeigt. Der Mandant wird als HOTSPOT deklariert und kann mittels Mausklick ausgewählt werden.
Bei “Enter” wird der erste Eintrag ausgewählt.
TYPE-POOLS slis.
DATA lt_popup TYPE STANDARD TABLE OF t000 WITH HEADER LINE.
DATA lv_exit_call TYPE c.
DATA ls_exit_user TYPE slis_exit_by_user.
DATA lt_excl TYPE slis_t_extab.
DATA lt_fcat TYPE slis_t_fieldcat_alv.
FIELD-SYMBOLS <fcat> TYPE slis_fieldcat_alv.
START-OF-SELECTION.
*** Tabelle T000 einlesen
SELECT * FROM t000 INTO TABLE lt_popup.
*** Feldkatalog besorgen
CALL FUNCTION ‘REUSE_ALV_FIELDCATALOG_MERGE’
EXPORTING
i_structure_name = ‘T000’
i_client_never_display = ‘ ‘
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
*** um dann das Feld “Mandant” als Hotspot-Feld zu definieren
LOOP AT lt_fcat ASSIGNING <fcat>.
IF <fcat>-fieldname = ‘MANDT’.
<fcat>-hotspot = ‘X’.
ENDIF.
ENDLOOP.
*** Aufruf als Popup
CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY’
EXPORTING
i_grid_title = ‘Auswahl’
i_callback_program = sy-cprog
i_callback_user_command = ‘USER_COMMAND’
it_fieldcat = lt_fcat
it_excluding = lt_excl
i_screen_start_column = 10
i_screen_start_line = 2
i_screen_end_column = 80
i_screen_end_line = 10
IMPORTING
e_exit_caused_by_caller = lv_exit_call
es_exit_caused_by_user = ls_exit_user
TABLES
t_outtab = lt_popup
EXCEPTIONS
program_error = 1
OTHERS = 2.
*** Ausgabe des Ergebnisses
WRITE: / ‘Exit Call’, lv_exit_call.
WRITE: / ‘Exit User Back’, ls_exit_user-back.
WRITE: / ‘Exit User Exit’, ls_exit_user-exit.
WRITE: / ‘Exit User Canc’, ls_exit_user-cancel.
WRITE: / ‘Auswahl ‘, lt_popup-mandt.
*&———————————————————————*
*& Form user_command
*&———————————————————————*
FORM user_command USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
*** Bei erster Auswahl den Baustein verlassen:
rs_selfield-exit = ‘X’.
*** …und die ausgewählte Zeile lesen
READ TABLE lt_popup INDEX rs_selfield-tabindex.
ENDFORM. “user_command
- Interview mit Björn Schulz (Software-Heroes.com) - 3. September 2024
- Daten aus ALV ermitteln - 3. September 2024
- So lange es den SAPGUI noch gibt… - 27. Juni 2024